//
//  HMComposeToolBar.swift
//  VVeibo21
//
//  Created by Apple on 16/11/1.
//  Copyright © 2016年 Apple. All rights reserved.
//

import UIKit


enum HMComposeToolBarButtonType: Int {
    //  图片
    case picture = 0
    // @
    case mention = 1
    // #
    case trend = 2
    //  表情
    case emoticon = 3
    //  加号
    case add = 4
}

//  自定义发微博 toolBar视图
//  UIStackView自身不具备渲染效果, 颜色是由子控件提供, 它只是一个容器
class HMComposeToolBar: UIStackView {
    //  执行点击相应按钮的闭包
    var callBack: ((HMComposeToolBarButtonType)->())?
    
    //  表情按钮
    var emoticonButton: UIButton?
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupUI()
    }
    
    required init(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    private func setupUI() {
        //  设置水平方向布局
        axis = .horizontal
        //  设置子控件填充方式
        distribution = .fillEqually
        //  _ = 忽略警告的方式1
        addChildButton(imageName: "compose_camerabutton_background", type: .picture)
        addChildButton(imageName: "compose_mentionbutton_background", type: .mention)
        addChildButton(imageName: "compose_trendbutton_background", type: .trend)
        emoticonButton = addChildButton(imageName: "compose_emoticonbutton_background", type: .emoticon)
        addChildButton(imageName: "compose_add_background", type: .add)
    }
    
    //  添加子按钮
    @discardableResult // -> 可以忽略返回结果 忽略警告的方式2
    private func addChildButton(imageName: String, type: HMComposeToolBarButtonType) -> UIButton {
    
        let button = UIButton()
        //  可以把枚举的原始值(rawValue)作为 button 的 tag 值使用
        button.tag = type.rawValue
        //  点击时间
        button.addTarget(self, action: #selector(buttonAction(btn:)), for: .touchUpInside)
        button.setImage(UIImage(named: imageName), for: .normal)
        button.setImage(UIImage(named: imageName + "_highlighted"), for: .highlighted)
        button.setBackgroundImage(UIImage(named: "compose_toolbar_background"), for: .normal)
        //  取得高亮效果
        button.adjustsImageWhenHighlighted = false
        //  添加子控件
        addArrangedSubview(button)
        
        return button
    }
    
    // MARK: - 点击事件
    @objc private func buttonAction(btn: UIButton) {
        //  点击按钮的要获取对应的枚举
        //  根据 tag 转成对应的枚举
        let type = HMComposeToolBarButtonType(rawValue: btn.tag)!
        
        //  执行相应的闭包
         callBack?(type)
    }
    
    //  根据是否是表情键盘类型切换不同的 icon
    func showIcon(isEmoticon: Bool) {
        //  如果传入的是表情键盘类型,那么显示系统键盘的 icon
        //  如果传入的是系统键盘类型,那么显示表情键盘的 icon
        if isEmoticon {
            //  表示表情键盘,显示系统键盘的 icon
            emoticonButton?.setImage(UIImage(named: "compose_keyboardbutton_background"), for: .normal)
            emoticonButton?.setImage(UIImage(named: "compose_keyboardbutton_background_highlighted"), for: .highlighted)
        } else {
            //  表示系统键盘,显示表情键盘的 icon
            emoticonButton?.setImage(UIImage(named: "compose_emoticonbutton_background"), for: .normal)
            emoticonButton?.setImage(UIImage(named: "compose_emoticonbutton_background_highlighted"), for: .highlighted)
        }
    
    }
    
    
    
    
    
    
    
    
    

}
